Forecast for 2021 election

Code
library(tidymodels)
── Attaching packages ────────────────────────────────────── tidymodels 1.0.0 ──
✔ broom        1.0.1     ✔ recipes      1.0.5
✔ dials        1.1.0     ✔ rsample      1.1.1
✔ dplyr        1.1.2     ✔ tibble       3.2.1
✔ ggplot2      3.4.0     ✔ tidyr        1.3.0
✔ infer        1.0.4     ✔ tune         1.0.1
✔ modeldata    1.1.0     ✔ workflows    1.1.3
✔ parsnip      1.0.4     ✔ workflowsets 1.0.0
✔ purrr        1.0.1     ✔ yardstick    1.1.0
── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ──
✖ purrr::discard() masks scales::discard()
✖ dplyr::filter()  masks stats::filter()
✖ dplyr::lag()     masks stats::lag()
✖ recipes::step()  masks stats::step()
• Use suppressPackageStartupMessages() to eliminate package startup messages
Code
library(tidyverse)
── Attaching packages
───────────────────────────────────────
tidyverse 1.3.2 ──
✔ readr   2.1.4     ✔ forcats 0.5.2
✔ stringr 1.5.0     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ readr::col_factor() masks scales::col_factor()
✖ purrr::discard()    masks scales::discard()
✖ dplyr::filter()     masks stats::filter()
✖ stringr::fixed()    masks recipes::fixed()
✖ dplyr::lag()        masks stats::lag()
✖ readr::spec()       masks yardstick::spec()
Code
library(fs)
library(here)
here() starts at C:/Users/carlo/OneDrive/Documents/GitHub/MSc_Project
Code
library(glmnet)
Loading required package: Matrix

Attaching package: 'Matrix'

The following objects are masked from 'package:tidyr':

    expand, pack, unpack

Loaded glmnet 4.1-6
Code
library(glue)

load models

Code
classification_model <- readRDS(here("6. Modelling","clustering_models","clustering_ranger_redux.rds"))

regression_parameters   <-  list()

for(i in 1:3){
  regression_parameters[[i]] <-readRDS(here("6. Modelling","elastic_net_eval",
                                 glue("cluster_delta_state_state{i-1}.rds"))) |>
      filter(RMSE_Overall==min(RMSE_Overall))
}
names(regression_parameters) <- 0:2

party_cols <- c("ALP","COAL","GRN","Other")

Forecasting 2021

Code
new_data <-  read_csv(here("4. Data","consolidated.csv"))      |>
           select(-any_of(party_cols))    |>
           filter(election_year==2022)                       |>
           select(-any_of(c("Year")))     |>
           mutate(Division = str_c(DivisionNm,"-",election_year),
                  .keep="unused",.before=1)                  |>
           mutate(Metro=case_when(
             Metro=="Yes" ~ 1,
             Metro=="No"  ~ 0
            ),.keep="unused") |>
           mutate(across(where(is.numeric), ~ replace_na(.x,0)))
Rows: 601 Columns: 65
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (4): DivisionNm, StateAb, Metro_Area, Metro
dbl (61): election_year, ALP, COAL, GRN, Other, Year, Australian_Citizens, A...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
clusters   <- new_data |> 
                   select(any_of(c("Division","Language_English_Only","Metro")),
                   any_of(c("Household_Flat",
                           "Household_Standalone",
                           "Household_Owned_with_a_mortgage",
                           "Relationship_Non_dependent_Child",
                           "Relationship_Group_Household",
                           "Relationship_Child_under_15"))) |>
              column_to_rownames("Division")
        

    




clusters<-        clusters|>
                  add_column(cluster= predict(classification_model,clusters)$.pred_class) |>
                  rownames_to_column("Division") |>
                  select(Division,cluster)
Code
library(leaflet)
library(sf)
Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
Code
map_data <- st_read(here("4. Data","CED_2021.gpkg")) |>
  left_join(clusters |>
            mutate(DivisionNm=str_remove(Division,"-2022")) |>
            mutate(DivisionNm=str_remove(DivisionNm," \\(II\\)")),
            by="DivisionNm") 
Reading layer `CED_2021' from data source 
  `C:\Users\carlo\OneDrive\Documents\GitHub\MSc_Project\4. Data\CED_2021.gpkg' 
  using driver `GPKG'
Simple feature collection with 151 features and 3 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: 96.81704 ymin: -43.65855 xmax: 167.9969 ymax: -9.219923
Geodetic CRS:  WGS 84
Code
clusters_colours <- ochRe::ochre_palettes[["lorikeet"]][1:3]
pal <- colorFactor(clusters_colours, 0:2)



map_data    |>
  leaflet() |>
  addPolygons(stroke = FALSE, smoothFactor = 0.3, fillOpacity = 1,     fillColor = ~pal(cluster),     label = ~glue::glue("{DivisionNm}: {cluster}")) |> 
  addLegend(pal = pal, values = ~cluster, opacity = 1.0)
Code
new_data <- new_data |>
            left_join(clusters,by="Division")

state <- read_csv(here("4. Data","state_values.csv")) |>
             filter(Year==2021) |>
             pivot_longer(-c(Year,StateAb), names_to = "Attribute",values_to="State") |>
             mutate(Attribute=str_replace_all(Attribute," - ","_"),
                    Attribute=str_replace_all(Attribute,"-","_"),
                    Attribute=str_squish(Attribute),
                    Attribute=str_replace_all(Attribute," ","_")) |>
              select(-Year)
Rows: 32 Columns: 64
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (1): StateAb
dbl (63): Year, Australian_Citizens, Age - Baby Boomers, Age - Gen X, Age - ...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
new_data_p <-  new_data |> 
            pivot_longer(-c(Division,StateAb,Metro,Metro_Area,cluster),names_to = "Attribute",values_to = "values") |>
            left_join(state,by=c("Attribute","StateAb")) |>
            mutate(diff=values-State,.keep="unused") |>
            pivot_wider(names_from = "Attribute",values_from = "diff")
Code
prediction <- tibble()


for(i in c(1:3)){
  
   cluster_nbr <- i-1
   
   predictors <- regression_parameters[[i]]$coefs[[1]] |>
                 filter(str_detect(covariate,"Intercept",TRUE)) |>
                 pull(covariate)
   
   x.new <-  new_data_p |>
              filter(cluster==cluster_nbr) |>
              column_to_rownames("Division") |>
              select(all_of(predictors))  |> 
              as.matrix()
   
   
   coefs <- regression_parameters[[i]]$coefs[[1]] |>
             filter(str_detect(covariate,"Intercept",TRUE))|>
             column_to_rownames("covariate") |>
             as.matrix()
   
    pred_i <-  x.new %*% coefs |> as_tibble(rownames="Division")
   
   
   #x.new <- model.matrix( ~ .+1, data = x.new) 
  
   #pred_i <- predict(regression_models[[i]], x.new) |>
  #           as_tibble(rownames="Division")         |>
   #          rename_with(~str_remove(.x,"\\.s0"))   |>
    #         mutate(cluster=cluster_nbr,.after=1)

   prediction <- bind_rows(prediction,pred_i)
     
}

prediction <-  prediction |>
               left_join(clusters,by="Division")
Code
historic_cluster <- read_csv(here("4. Data","consolidated_cluster.csv"))      |>
                    filter(election_year!=2022)                       |>
                    select(-any_of(c("GRN","COAL","ALP","Other")))              |>
                     mutate(across(where(is.numeric), ~ replace_na(.x,0)))
Rows: 601 Columns: 65
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (4): DivisionNm, StateAb, Metro_Area, Metro
dbl (61): election_year, Year, Australian_Citizens, Age_Baby_Boomers, Age_Ge...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
#news poll
primary_vote <- tribble(~PartyAb,~Avg.Vote,
                        "COAL", 35, 
                        "ALP",  36,
                        "GRN",  12,
                        "Other",17)

actual_vote <- read_csv(here("4. Data","primary_vote.csv")) |>
               filter(Year==2022)                           |>
               group_by(PartyAb,DivisionNm)                 |>
               summarise(Actual=sum(Percentage),.groups="drop")
Rows: 2880 Columns: 6
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (3): StateAb, DivisionNm, PartyAb
dbl (3): Year, OrdinaryVotes, Percentage

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
prediction_compared <- prediction |>
  pivot_longer(-c(Division,cluster),
               names_to="PartyAb",
               values_to = "VoteDiff") |>
  mutate(DivisionNm=str_remove(Division,"-2022")) |>
  left_join(primary_vote,by="PartyAb") |>
  mutate(Predicted=Avg.Vote+VoteDiff) |>
  left_join(actual_vote,by=c("DivisionNm","PartyAb")) |>
  select(DivisionNm,PartyAb,cluster,Predicted,Actual) |>
  mutate(Error=Actual-Predicted)
Code
library(echarts4r)

prediction_compared$ref <- rnorm(nrow(prediction_compared))
auspol::party_colours()[party_cols]
      ALP      COAL       GRN     Other 
"#E13940" "#1C4F9C" "#009C3D" "#414141" 
Code
prediction_compared |>
  mutate(Div=glue::glue("{DivisionNm} ({cluster}): {PartyAb}")) |>
  group_by(PartyAb,cluster) |>
  e_charts(Error)       |>
   e_theme_custom('{"color":["#E13940","#1C4F9C","#009C3D","#414141"]}')|>
  e_scatter(ref,symbol_size = 10,bind=Div)   |>
  e_x_axis(min=-30,max=30) |>
  e_rm_axis(axis="y") |>
  e_facet(rows=4,cols=3)    |>
  e_tooltip(formatter = htmlwidgets::JS("
      function(params){
        return('<strong>' + params.name + 
                '</strong><br />error: ' + params.value[0]) 
                }
    ")) 
Code
prediction_compared |>
  mutate(Error=Error^2) |>
  group_by(PartyAb) |>
  summarise(RMSE=sqrt(mean(Error,na.rm=TRUE)),.groups="drop")

Samples

Code
library(auspol)

house_primary_historic_plot("Melbourne", parties =3, 
                            parties_year = 2022, 
                            include_others = TRUE ) +
  geom_point(data=(prediction_compared |> 
                  filter(str_detect(DivisionNm,"Melbourne")) |>
                  select(PartyAb,Predicted)                  |>
                  mutate(PartyAb=if_else(PartyAb=="COAL","LP",PartyAb)) |>
                  mutate(Year=2022)),
             aes(x=Year,y=Predicted,colour=PartyAb),
             inherit.aes = FALSE,shape="X",size=5) 

Code
house_primary_historic_plot("Eden-Monaro", parties =3, 
                            parties_year = 2022, 
                            include_others = TRUE ) +
  geom_point(data=(prediction_compared |> 
                  filter(str_detect(DivisionNm,"Eden-Monaro")) |>
                  select(PartyAb,Predicted)                  |>
                  mutate(PartyAb=if_else(PartyAb=="COAL","LP",PartyAb)) |>
                  mutate(Year=2022)),
             aes(x=Year,y=Predicted,colour=PartyAb),
             inherit.aes = FALSE,shape="X",size=5) 

Code
house_primary_historic_plot("Whitlam", parties =3, 
                            parties_year = 2022, 
                            include_others = TRUE ) +
  geom_point(data=(prediction_compared |> 
                  filter(str_detect(DivisionNm,"Whitlam")) |>
                  select(PartyAb,Predicted)                  |>
                  mutate(PartyAb=if_else(PartyAb=="COAL","LP",PartyAb)) |>
                  mutate(Year=2022)),
             aes(x=Year,y=Predicted,colour=PartyAb),
             inherit.aes = FALSE,shape="X",size=5) 

Code
house_primary_historic_plot("Oxley", parties =3, 
                            parties_year = 2022, 
                            include_others = TRUE ) +
  geom_point(data=(prediction_compared |> 
                  filter(str_detect(DivisionNm,"Oxley")) |>
                  select(PartyAb,Predicted)                  |>
                  mutate(PartyAb=if_else(PartyAb=="COAL","LNP",PartyAb)) |>
                  mutate(Year=2022)),
             aes(x=Year,y=Predicted,colour=PartyAb),
             inherit.aes = FALSE,shape="X",size=5) 

Code
house_primary_historic_plot("Goldstein", parties =4, 
                            parties_year = 2022, 
                            include_others = TRUE ) +
  geom_point(data=(prediction_compared |> 
                  filter(str_detect(DivisionNm,"Goldstein")) |>
                  select(PartyAb,Predicted)                  |>
                  mutate(PartyAb=if_else(PartyAb=="COAL","LNP",PartyAb)) |>
                  mutate(Year=2022)),
             aes(x=Year,y=Predicted,colour=PartyAb),
             inherit.aes = FALSE,shape="X",size=5)

Does it work

Against results cluster 0

Code
s <- list()

for(cluster in 0:2){

coefs <- regression_parameters[[cluster+1]]$coefs[[1]] |>
           filter(str_detect(covariate,"Intercept",TRUE))

preds <- prediction_compared|>
        filter(cluster==cluster) |>
        select(DivisionNm,PartyAb,Actual) |>
        pivot_wider(names_from = PartyAb,values_from = Actual) |>
        mutate(Division = str_c(DivisionNm,"-2022"),.keep="unused")

data <- new_data_p |>
        filter(cluster==cluster) |>
        select(all_of(c("Division",coefs$covariate))) 

q <- list()
for(party in party_cols){
p<- list()
for(coef in coefs$covariate){
#coef <- coefs[1,]$covariate
value <- coefs[1,] |> select(any_of(party)) |> pull()


p[[length(p)+1]] <- preds |> select(Division,all_of(party)) |>
  left_join(data |> select(Division,any_of(c(coef))),
            by="Division") |>
  rename("Actual"=party,"Cov"=coef) |>
  ggplot(aes(Cov,Actual)) +
  geom_point() +
  labs(title=glue("{coef} for {party} in cluster {cluster} : {round(value,4)}",
        x=Cov,y="Difference from Avg")) +
  theme_minimal()
}
names(p) <- coefs$covariate
q[[length(q)+1]] <- p
}
names(q) <- party_cols
s[[length(s)+1]] <- q
}
Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
ℹ Please use `all_of()` or `any_of()` instead.
  # Was:
  data %>% select(party)

  # Now:
  data %>% select(all_of(party))

See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
ℹ Please use `all_of()` or `any_of()` instead.
  # Was:
  data %>% select(coef)

  # Now:
  data %>% select(all_of(coef))

See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
Code
names(s) <- str_c("cluster",0:2)
Code
s
$cluster0
$cluster0$ALP
$cluster0$ALP$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$ALP$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster0$COAL
$cluster0$COAL$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$COAL$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster0$GRN
$cluster0$GRN$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster0$GRN$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster0$Other
$cluster0$Other$Age_Baby_Boomers
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Age_Gen_Y
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Language_European
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Language_Greek
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Language_Italian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Language_South_Asian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Religion_Christian_Orthodox
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Religion_Islam
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Religion_No_Religion_Secular
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Income_2000_or_more
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Household_Owned_with_a_mortgage
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Household_Standalone
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Household_Tenure_other_or_not_stated
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Education_Diploma_or_Certificate
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Education_Graduate_Diploma_or_Certificate
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Child_under_15
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Group_Household
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Married
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Non_dependent_Child
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Other_Relationship
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Single_Parent
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster0$Other$Relationship_Unrelated_in_family_household
Warning: Removed 21 rows containing missing values (`geom_point()`).




$cluster1
$cluster1$ALP
$cluster1$ALP$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$ALP$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster1$COAL
$cluster1$COAL$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$COAL$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster1$GRN
$cluster1$GRN$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster1$GRN$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster1$Other
$cluster1$Other$Age_Baby_Boomers
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Age_Gen_Y
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Language_European
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Language_Greek
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Language_Italian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Language_South_Asian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Religion_Christian_Orthodox
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Religion_Islam
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Religion_No_Religion_Secular
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Income_2000_or_more
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Household_Owned_with_a_mortgage
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Household_Standalone
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Household_Tenure_other_or_not_stated
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Education_Diploma_or_Certificate
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Education_Graduate_Diploma_or_Certificate
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Child_under_15
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Group_Household
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Married
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Non_dependent_Child
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Other_Relationship
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Single_Parent
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster1$Other$Relationship_Unrelated_in_family_household
Warning: Removed 21 rows containing missing values (`geom_point()`).




$cluster2
$cluster2$ALP
$cluster2$ALP$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$ALP$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster2$COAL
$cluster2$COAL$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$COAL$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster2$GRN
$cluster2$GRN$Age_Baby_Boomers
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Age_Gen_Y
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Language_European
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Language_Greek
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Language_Italian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Language_South_Asian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Religion_Christian_Orthodox
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Religion_Islam
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Religion_No_Religion_Secular
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Income_2000_or_more
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Household_Owned_with_a_mortgage
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Household_Standalone
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Household_Tenure_other_or_not_stated
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Education_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Education_Graduate_Diploma_or_Certificate
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Child_under_15
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Group_Household
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Married
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Non_dependent_Child
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Other_Relationship
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Single_Parent
Warning: Removed 1 rows containing missing values (`geom_point()`).


$cluster2$GRN$Relationship_Unrelated_in_family_household
Warning: Removed 1 rows containing missing values (`geom_point()`).



$cluster2$Other
$cluster2$Other$Age_Baby_Boomers
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Age_Gen_Y
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Language_European
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Language_Greek
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Language_Italian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Language_South_Asian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Religion_Anglican_Uniting_Presbyterian
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Religion_Christian_Orthodox
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Religion_Islam
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Religion_No_Religion_Secular
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Income_2000_or_more
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Household_Owned_with_a_mortgage
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Household_Standalone
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Household_Tenure_other_or_not_stated
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Education_Diploma_or_Certificate
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Education_Graduate_Diploma_or_Certificate
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Child_under_15
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Group_Household
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Married
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Non_dependent_Child
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Other_Relationship
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Single_Parent
Warning: Removed 21 rows containing missing values (`geom_point()`).


$cluster2$Other$Relationship_Unrelated_in_family_household
Warning: Removed 21 rows containing missing values (`geom_point()`).